use utf8;
package iSOCK::Schema::App::Result::Job;

# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE

=head1 NAME

iSOCK::Schema::App::Result::Job

=cut

use strict;
use warnings;

use Moose;
use MooseX::NonMoose;
use MooseX::MarkAsMethods autoclean => 1;
extends 'DBIx::Class::Core';

=head1 COMPONENTS LOADED

=over 4

=item * L<DBIx::Class::InflateColumn::DateTime>

=back

=cut

__PACKAGE__->load_components("InflateColumn::DateTime");

=head1 TABLE: C<job>

=cut

__PACKAGE__->table("job");

=head1 ACCESSORS

=head2 id

  data_type: 'integer'
  is_auto_increment: 1
  is_nullable: 0
  sequence: 'job_id_seq'

=head2 specification_id

  data_type: 'text'
  is_foreign_key: 1
  is_nullable: 0

=head2 specification_branch

  data_type: 'text'
  is_nullable: 1

=head2 specification_revision

  data_type: 'integer'
  is_nullable: 1

=head2 specification_status_id

  data_type: 'text'
  is_nullable: 1

=head2 followup_revision

  data_type: 'integer'
  is_nullable: 1

=head2 followup_status_id

  data_type: 'text'
  is_nullable: 1

=head2 commit_revision

  data_type: 'integer'
  is_nullable: 1

=head2 sock_version

  data_type: 'text'
  is_nullable: 0

=head2 isock_version

  data_type: 'text'
  is_nullable: 1

=head2 when_started

  data_type: 'timestamp'
  is_nullable: 0

=head2 when_completed

  data_type: 'timestamp'
  is_nullable: 1

=head2 status_id

  data_type: 'text'
  is_foreign_key: 1
  is_nullable: 0

=head2 session_id

  data_type: 'char'
  is_nullable: 0
  size: 40

=head2 main_log

  data_type: 'text'
  is_nullable: 1

=head2 harvest_id

  data_type: 'integer'
  is_foreign_key: 1
  is_nullable: 1

=head2 dummy

  data_type: 'boolean'
  is_nullable: 1

=cut

__PACKAGE__->add_columns(
  "id",
  {
    data_type         => "integer",
    is_auto_increment => 1,
    is_nullable       => 0,
    sequence          => "job_id_seq",
  },
  "specification_id",
  { data_type => "text", is_foreign_key => 1, is_nullable => 0 },
  "specification_branch",
  { data_type => "text", is_nullable => 1 },
  "specification_revision",
  { data_type => "integer", is_nullable => 1 },
  "specification_status_id",
  { data_type => "text", is_nullable => 1 },
  "followup_revision",
  { data_type => "integer", is_nullable => 1 },
  "followup_status_id",
  { data_type => "text", is_nullable => 1 },
  "commit_revision",
  { data_type => "integer", is_nullable => 1 },
  "sock_version",
  { data_type => "text", is_nullable => 0 },
  "isock_version",
  { data_type => "text", is_nullable => 1 },
  "when_started",
  { data_type => "timestamp", is_nullable => 0 },
  "when_completed",
  { data_type => "timestamp", is_nullable => 1 },
  "status_id",
  { data_type => "text", is_foreign_key => 1, is_nullable => 0 },
  "session_id",
  { data_type => "char", is_nullable => 0, size => 40 },
  "main_log",
  { data_type => "text", is_nullable => 1 },
  "harvest_id",
  { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
  "dummy",
  { data_type => "boolean", is_nullable => 1 },
);

=head1 PRIMARY KEY

=over 4

=item * L</id>

=back

=cut

__PACKAGE__->set_primary_key("id");

=head1 RELATIONS

=head2 harvest

Type: belongs_to

Related object: L<iSOCK::Schema::App::Result::Harvest>

=cut

__PACKAGE__->belongs_to(
  "harvest",
  "iSOCK::Schema::App::Result::Harvest",
  { id => "harvest_id" },
  {
    is_deferrable => 1,
    join_type     => "LEFT",
    on_delete     => "CASCADE",
    on_update     => "CASCADE",
  },
);

=head2 harvests

Type: has_many

Related object: L<iSOCK::Schema::App::Result::Harvest>

=cut

__PACKAGE__->has_many(
  "harvests",
  "iSOCK::Schema::App::Result::Harvest",
  { "foreign.job_id" => "self.id" },
  { cascade_copy => 0, cascade_delete => 0 },
);

=head2 specification

Type: belongs_to

Related object: L<iSOCK::Schema::App::Result::Specification>

=cut

__PACKAGE__->belongs_to(
  "specification",
  "iSOCK::Schema::App::Result::Specification",
  { id => "specification_id" },
  { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
);

=head2 status

Type: belongs_to

Related object: L<iSOCK::Schema::App::Result::Status>

=cut

__PACKAGE__->belongs_to(
  "status",
  "iSOCK::Schema::App::Result::Status",
  { id => "status_id" },
  { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
);


# Created by DBIx::Class::Schema::Loader v0.07033 @ 2012-12-14 09:29:30
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:2zOQWDBR0K1Q2G4kpiJfkw

use DateTime;
use DateTime::Duration::Fuzzy qw( time_ago );

sub when_completed_fuzzy {
  my ( $self ) = @_;
  
  return unless $self->when_completed;
  
  return time_ago ( $self->when_completed, DateTime->now );
}

# You can replace this text with custom code or comments, and it will be preserved on regeneration
__PACKAGE__->meta->make_immutable;
1;
